﻿#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
#include<stdbool.h>

typedef int datatype;

typedef struct DListNode
{
	datatype data;
	struct DList * next;
}DLNode;


// 队列的结构  不带哨兵位的写法
typedef struct DList
{
	//头指针
	DLNode* front;
	//尾指针
	DLNode* rear;
	//方便计算个数
	int size;
}DL;


// 初始化队列 
void DLInit(DL*p);

// 队尾入队列 尾插
void DLPush(DL*p,datatype data);

// 队头出队列 头删
void DLPop(DL* p);

// 获取队列头部元素 
datatype DLFront(DL* p);

// 获取队列队尾元素 
datatype DLBack(DL* p);

// 获取队列中有效元素个数 
int DLSize(DL* p);

// 检测队列是否为空，如果为空返回非零结果，如果非空返回0 
bool DLEmpty(DL* p);

// 销毁队列 
void DLDestroy(DL*p);